Telegram Group Search
Делаем собственный анализатор C++ кода в виде плагина для Clang

Есть много проектов, целью которых является превратить С++ более "безопасный" язык программирования. Но внесение изменений в синтаксис языка обычно нарушает обратную совместимость со старым кодом, который был написан до этого.

Недавно вышла новая версия библиотеки memsafe для языка С++, которая превращает его в Rust с помощью плагина Clang добавляет в С++ безопасное управление динамической памятью и контроль инвалидации ссылочных типов данных во время компиляции приложения.

Но данная статья не о библиотеке, а об особенностях разработки анализатора программы на С++ в виде плагина для Clang.

Можно считать, что это подведение итогов по результатам сравнения нескольких разных способов создания плагина для компилятора С++, а так же очередной Хабрахак для хранения результатов экспериментов и публикации итоговых выводов, которые я решил сохранить не только для себя, но и в виде статьи на Хабре, что бы результатами моего труда могли воспользоваться и другие хорошие люди :-), которым так же может потребоваться погрузиться в дебри парсинга исходного текста программ.

https://habr.com/ru/articles/900224/

#cpp #programming

👉 @cpp_lib
Как создать собственное расширение компилятора C++

Создание пользовательского расширения компилятора C++ подразумевает понимание базовых механизмов работы компиляторов, изменение или расширение их функциональности и бесшовную интеграцию этих изменений в существующую инфраструктуру компилятора. Это руководство проведет вас через весь процесс, от понимания основ до внедрения и тестирования вашего пользовательского расширения. Целевая аудитория этого руководства — разработчики, которые уже знакомы с C++ и имеют базовое понимание концепций компилятора.

https://habr.com/ru/articles/870840/

original https://www.w3computing.com/articles/how-to-create-a-custom-cpp-compiler-extension/

#cpp #programming

👉 @cpp_lib
🌌 Путешествие в мир Авроры: создаём приложения с Qt/QML 🚀

Российская мобильная ОС Аврора — перспективная платформа для разработчиков. Хотите узнать, как создавать для неё нативные приложения с помощью Qt/QML? Разбираем всё на открытом вебинаре!

📅 22 апреля в 20:00
🎓 Открытый вебинар с Ксенией Лагутиной

💡 Что разберём?
Почему ОС Аврора — интересная среда для разработки
Как работает Аврора SDK и чем поможет разработчику
С чего начать разработку нативных приложений
Как создать мини-приложение на QML, которое отправляет уведомления в систему

🎯 Что получите?
✔️ Понимание ключевых особенностей ОС Аврора
✔️ Навыки работы с Аврора SDK и Аврора IDE
✔️ Практический опыт создания приложения на QML

Присоединяйтесь и погружайтесь в разработку под Аврору!

👉 Регистрируйтесь по ссылке: https://vk.cc/cKVg3i

Бесплатное занятие приурочено к старту курса Разработка прикладного ПО на Qt и ОС «Аврора», обучение на котором позволит освоить кросс-платформенный фреймворк Qt.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Media is too big
VIEW IN TELEGRAM
Практика языка C (МФТИ, 2023-2024). Допсеминар: системы сборки (make, cmake).

00:00 Зависимости и хедера
08:22 Build.sh
11:48 Makefiles и декларативная модель
19:51 Ленивые и переменные
30:52 Автоматические переменные
36:15 Первая версия makefile
41:33 Функции и wildcards
47:40 Вторая версия makefile и зависимости от хедеров
56:36 Третья итерация: почти идеальный makefile
01:06:26 Знакомство с cmake
01:19:35 Бонус. Немного больше про cmake.
01:30:40 Окончательные уроки.

источник

#cpp #programming

👉 @cpp_lib
📕Открытый урок об управлении микроклиматом с помощью микроконтроллеров для радиолюбителей, разработчиков встраемого ПО, инженеров, разработчиков электроники и инженеров-схемотехников.

На открытом уроке 21 апреля в 20:00 мск мы погрузимся в тонкости подключения и программировании системы управления микроклиматом с помощью микроконтроллеров.

📗В результате вы:
- Узнаете, как подключить к микроконтроллеру и запрограммировать датчики температуры, влажности и исполнительное устройство;
- Разберетесь, как сделать прототип системы, которая управляет микроклиматом сама;
- Освоите на практике техники управления макетом по WiFi с мобильного телефона или компьютера с помощью создания простого web-сайта.

Спикер Игорь Морозов — эксперт в сфере Embedded Development, 15+ лет в разработке и управлении IT-проектами, технический директор стартапа по созданию робототехнических устройств с элементами машинного зрения.

👉Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cKX0zr

📙Все участники открытого урока получат скидку на курс "Embedded Developer"

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Линус Торвальдс: Критика C++ — Комплексный анализ

Линус Торвальдс, создатель (и великодушный диктатор) Linux, всегда с особой критикой относился к C++, объясняя почему он отвергает его в разработке ядра Linux. Но он не просто резко высказывается против использования C++, а приводит ряд аргументов, которые мы с вами сегодня и рассмотрим.

В чем причина неприятия C++? Давайте рассмотрим аргументы, которые Линус приводит против его использования.

C и C++ очень похожи друг на друга, но все‑таки это не одно и то же. C++ является объектно‑ориентированной версией C. Некоторые даже называют его преемником C. Однако C++ представляет из себя скорее расширение языка C, нежели его полноценную замену. Он добавляет такие функции, как объекты, конструкторы, деструкторы, шаблоны, обработка исключений, пространства имен и перегрузка операторов. Эти расширения приносят с собой свои собственные парадигмы и проблемы. Неудивительно, что все технические аргументы Линуса против C++ связаны именно с этими расширениями.

https://habr.com/ru/companies/otus/articles/902724/

original https://medium.com/@jankammerath/linus-torvalds-critique-of-c-a-comprehensive-review-ea8374084abf

#cpp #programming

👉 @cpp_lib
🚀 CUTE_HEADERS - Коллекция кроссплатформенных однофайловых библиотек на C/C++ без зависимостей, в основном используемых для разработки игр.

🔹 Математика (векторы, матрицы)
🔹 Системы частиц
🔹 Аудио и таймеры
🔹 Работа с файлами
🔹 Простая физика и коллизии
🔹 Анимация и графика
🔹 И многое другое!

Все библиотеки — в одном .h файле, без зависимостей. Отлично подходят для маленьких проектов, прототипов и учебных задач.

https://github.com/RandyGaul/cute_headers

#cpp #programming

👉 @cpp_lib
⚙️Уже работаете с Rust, но хотите эффективно интегрировать его с другими языками? Или интересуетесь, как устроен процесс сборки и линковки в этом языке?

🗓На открытом вебинаре 24 апреля в 20:00 мск мы подробно разберем, как собирать и линковать библиотеки в Rust, как использовать Rust-библиотеки в других языках, а также реализуем Си ABI (Application Binary Interface). Вы получите знания, которые помогут вам повысить производительность ваших проектов и интегрировать Rust в существующие решения.

👨‍💻Урок будет полезен всем, кто хочет углубить свои знания в Rust, повысить квалификацию и навыки работы с библиотеками и системами. Вы сможете применять полученные знания в реальных проектах.

👉Присоединяйтесь к открытому вебинару и получите скидку на большое обучение «Rust Developer. Professional»: https://vk.cc/cL2YJr

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Три теоремы о сортировках

Я знаю многих программистов и руководителей в IT компаниях, которые недолюбливают математиков и в частности считают их далёкими от жизни идиотами из-за их утверждений в духе "нельзя отсортировать последовательность быстрее, чем за nlogn" -- ведь это очевидным образом неверно, есть же сортировка подсчетом и radix sort. Нюанс в том, что описанное выше -- это распространённая некорректная трактовка одной из ключевых теорем об алгоритмах сортировок, корректное утверждение выглядит так: "не существует алгоритма, который бы гарантированно находил перестановку n элементов, приводящую к возрастающему порядку, быстрее чем за nlogn используя только операции попарного сравнения". В этом утверждении больше слов, оно более сложно в плане когнитивного восприятия, ключевой момент обозначил жирным шрифтом, чувствуете разницу?

https://habr.com/ru/articles/893452/

#cpp #programming

👉 @cpp_lib
🔥 Готовы прокачать свои навыки на C++ до уровня эксперта? Освойте разработку на Qt и создавайте приложения для ОС «Аврора», используя лучшие практики и мощные инструменты! 🚀

Курс "Разработка прикладного ПО на Qt и ОС «Аврора»" — возможность для разработчиков на C++, которые хотят:

- изучить работу с кросс-платформенным фреймворком Qt.
- создавать высококачественные графические интерфейсы.
- развиваться в нише ОС «Аврора», которая только набирает популярность.

💥 до 27 апреля не упустите шанс получить скидку 15%! Только для вас скидка 10% + промокод QT_Avrora5 на дополнительные 5%!

Пройдите вступительное тестирование и успейте вступить в группу курса!

👉Пройти тест: https://vk.cc/cL4RhV

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🚀 Подборка Telegram каналов для программистов

Системное администрирование, DevOps 📌

https://www.tg-me.com/bash_srv Bash Советы
https://www.tg-me.com/win_sysadmin Системный Администратор Windows
https://www.tg-me.com/sysadmin_girl Девочка Сисадмин
https://www.tg-me.com/srv_admin_linux Админские угодья
https://www.tg-me.com/linux_srv Типичный Сисадмин
https://www.tg-me.com/devopslib Библиотека девопса | DevOps, SRE, Sysadmin
https://www.tg-me.com/linux_odmin Linux: Системный администратор
https://www.tg-me.com/devops_star DevOps Star (Звезда Девопса)
https://www.tg-me.com/i_linux Системный администратор
https://www.tg-me.com/linuxchmod Linux
https://www.tg-me.com/sys_adminos Системный Администратор
https://www.tg-me.com/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://www.tg-me.com/sysadminof Книги для админов, полезные материалы
https://www.tg-me.com/i_odmin Все для системного администратора
https://www.tg-me.com/i_odmin_book Библиотека Системного Администратора
https://www.tg-me.com/i_odmin_chat Чат системных администраторов
https://www.tg-me.com/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://www.tg-me.com/sysadminoff Новости Линукс Linux

1C разработка 📌
https://www.tg-me.com/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://www.tg-me.com/DevLab1C 1С:Предприятие 8
https://www.tg-me.com/razrab_1C 1C Разработчик
https://www.tg-me.com/buh1C_prog 1C Программист | Бухгалтерия и Учёт
https://www.tg-me.com/rabota1C_rus Вакансии для программистов 1С

Программирование C++📌
https://www.tg-me.com/Библиотека C C разработчика/com.cpp_lib Библиотека C/C++ разработчика
https://www.tg-me.com/cpp_knigi Книги для программистов C/C++
https://www.tg-me.com/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
https://www.tg-me.com/pythonofff Python академия.
https://www.tg-me.com/BookPython Библиотека Python разработчика
https://www.tg-me.com/python_real Python подборки на русском и английском
https://www.tg-me.com/python_360 Книги по Python

Java разработка 📌
https://www.tg-me.com/BookJava Библиотека Java разработчика
https://www.tg-me.com/java_360 Книги по Java Rus
https://www.tg-me.com/java_geek Учим Java на примерах

GitHub Сообщество 📌
https://www.tg-me.com/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://www.tg-me.com/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
https://www.tg-me.com/developer_mobila Мобильная разработка
https://www.tg-me.com/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
https://www.tg-me.com/frontend_1 Подборки для frontend разработчиков
https://www.tg-me.com/frontend_sovet Frontend советы, примеры и практика!
https://www.tg-me.com/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
https://www.tg-me.com/game_devv Все о разработке игр

Библиотеки 📌
https://www.tg-me.com/book_for_dev Книги для программистов Rus
https://www.tg-me.com/programmist_of Книги по программированию
https://www.tg-me.com/proglb Библиотека программиста
https://www.tg-me.com/bfbook Книги для программистов

БигДата, машинное обучение 📌
https://www.tg-me.com/bigdata_1 Big Data, Machine Learning

Программирование 📌
https://www.tg-me.com/bookflow Лекции, видеоуроки, доклады с IT конференций
https://www.tg-me.com/rust_lib Полезный контент по программированию на Rust
https://www.tg-me.com/golang_lib Библиотека Go (Golang) разработчика
https://www.tg-me.com/itmozg Программисты, дизайнеры, новости из мира IT
https://www.tg-me.com/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
https://www.tg-me.com/nodejs_lib Подборки по Node js и все что с ним связано
https://www.tg-me.com/ruby_lib Библиотека Ruby программиста
https://www.tg-me.com/lifeproger Жизнь программиста. Авторский канал.

QA, тестирование 📌
https://www.tg-me.com/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://www.tg-me.com/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://www.tg-me.com/thehaking Канал о кибербезопасности
https://www.tg-me.com/xakep_2 Хакер Free

Книги, статьи для дизайнеров 📌
https://www.tg-me.com/ux_web Статьи, книги для дизайнеров

Математика 📌
https://www.tg-me.com/Pomatematike Канал по математике
https://www.tg-me.com/phis_mat Обучающие видео, книги по Физике и Математике
https://www.tg-me.com/matgeoru Математика | Геометрия | Логика

Excel лайфхак📌
https://www.tg-me.com/Excel_lifehack

https://www.tg-me.com/mir_teh Мир технологий (Technology World)

Вакансии 📌
https://www.tg-me.com/sysadmin_rabota Системный Администратор
https://www.tg-me.com/progjob Вакансии в IT
Техники сортировки в C++

Сортировка — это процесс упорядочивания элементов массива или списка в определённом порядке (например, по возрастанию или убыванию).

В C++ реализовано множество алгоритмов сортировки, включая:
- Сортировку пузырьком (Bubble Sort)
- Сортировку вставками (Insertion Sort)
- Сортировку выбором (Selection Sort)
- Быструю сортировку (Quick Sort)
- Сортировку слиянием (Merge Sort)
- Сортировку кучей (Heap Sort)
- ПорRadix Sort
- Bucket Sort

Каждый метод сортировки имеет свою эффективность по времени выполнения и памяти:
- Простые алгоритмы вроде пузырьковой сортировки подходят для небольших массивов.
- Быстрая сортировка и сортировка слиянием лучше работают с большими объёмами данных.
- Выбор конкретного метода зависит от характеристик задачи: объём данных, требования к памяти, допустимость нестабильной сортировки и т.д.

Также в C++ стандартная библиотека предоставляет функцию std::sort(), которая реализует быструю сортировку с улучшениями.

https://www.softwaretestinghelp.com/sorting-techniques-in-cpp/

#cpp #programming

👉 @cpp_lib
Media is too big
VIEW IN TELEGRAM
Vibe Coding C++ — Йенс Веллер — Meeting C++ online

Я занимался "vibe coding" на C++, чтобы почувствовать, на что сейчас способны Grok, ChatGPT и Claude*. Простая задача с несколькими нетривиальными случаями — это и стало испытанием.

Я задумался, можно ли создать ассистента для программирования на базе ИИ, и решил, что будет отличной идеей провести небольшое "собеседование" с этими агентами, чтобы проверить, справятся ли они с этой задачей.

источник

#cpp #programming

👉 @cpp_lib
Media is too big
VIEW IN TELEGRAM
Сборка C++ проектов. Raylib. Дополнительные темы CMAKE. Game Engine серии

0:00:00 - Введение
0:00:51 - Raylib, SDL, SFML
0:03:20 - Подключаем, тестируем raylib
0:14:22 - Вложенные CMakeLists
0:33:15 - Макросы в CMake
0:36:35 - Raylib + ChuckNorrisJokes
0:45:49 - Собираем все проекты

источник

#cpp #programming

👉 @cpp_lib
📕 Тест по навыкам работы со схемотехникой и С/С++ для разработчиков, инженеров-схемотехников и энтузиастов 📕

Ответьте на 12 вопросов и проверьте, насколько вы разбираетесь в базовых принципах работы со схемотехникой, понимаете особенности работы с микроконтроллерами и на сколько готовы к обучению на курсе — «Embedded Developer».

За 4 месяца курса вы:
- Научитесь писать код для управления различными модулями, такими как таймеры, прерывания, АЦП/ЦАП
- Освоите использование различных протоколов взаимодействия (I2C, SPI, UART, WiFi и BLE) для интеграции микроконтроллеров в сложные системы
- Сможете создавать надежные и эффективные электронные устройства, используя современные инструменты и технологии

Время прохождения теста ограниченно 60 минут

👉 ПРОЙТИ ТЕСТ — https://vk.cc/cLkoYG

💣 Пройдите тест, получите скидку на курс, и записи уроков от преподавателей курса в подарок.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Пишем на С++ вектор, умеющий расширяться без копирования элементов

В языке С есть функции malloc, free и realloc. При использовании последней вы можете написать этакий расширяющийся массив из примитивных типов или структур (классов-то нет), который, можно надеяться, не будет копировать все данные при каждом расширении. В С++ есть встроенный класс vector, который представляет из себя расширяющийся массив, но он так не умеет: при каждом расширении вектора выделяется новый участок памяти и все элементы перемещаются на него (по возможности, с использованием move-семантики). Но ведь, если можно каждый раз не копировать все старые элементы на новое место, вектор должен работать быстрее? В этой статье я попробую написать вектор, который умеет расширяться без копирования элементов.

Сначала я покажу, что стандартный вектор не умеет расширяться без копирования/перемещения, потом обсужу придуманное решение, потом собственно приведу реализацию вектора, а в конце сравню производительность со стандартным вектором.

https://habr.com/ru/post/701784/

#cpp #programming

👉 @cpp_lib
🔐 Как сделать код на Rust надёжнее и безопаснее?

📅 14 мая в 20:00 МСК мы разберём ключевые аспекты работы с контрактами и инвариантами в Rust на открытом вебинаре.

❗️Что вас ждёт:

— Разберём понятие инварианта и как он работает в Rust.

— Обсудим инвариант безопасности и его роль в написании надежного кода.

— Узнаем, как создавать удобные и безопасные контракты для API.

🦀 Вы освоите использование системы типов Rust для создания надёжных решений и узнаете, как компилятор и система типов помогают писать безопасный и эффективный код.

➡️ Регистрируйтесь и получите скидку на программу обучения «Rust Developer. Professional»: https://vk.cc/cLCkz3

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
This media is not supported in your browser
VIEW IN TELEGRAM
Этот проект содержит исходный код игр Command & Conquer: Tiberian Dawn и Command & Conquer: Red Alert, выпущенных как часть сборника Command & Conquer Remastered Collection.

Код распространяется под лицензией GPL v3 и предоставляет возможность энтузиастам и разработчикам модифицировать, изучать и использовать движок в рамках условий лицензии. В проекте используется C++ и множество современных практик разработки, а также система сборки CMake.

Репозиторий включает:

* Исходный код движка на C++
* Документацию по сборке
* Скрипты для интеграции с игрой
* Исторический контекст разработки

Проект ориентирован на обучение, поддержку моддинга и развитие сообщества вокруг классических RTS-игр.

https://github.com/electronicarts/CnC_Remastered_Collection

#cpp #programming

👉 @cpp_lib
2025/06/18 23:18:28
Back to Top
HTML Embed Code: